www.gusucode.com > VC++ 仿SQLServer企业管理器的SQL客户端工具-源码程序 > VC++ 仿SQLServer企业管理器的SQL客户端工具-源码程序/code/outputCon.cpp

    #include "stdafx.h"
#include "outputCon.h"
// Download by http://www.NewXing.com

FILE* __fStdOut = NULL;    
HANDLE __hStdOut = NULL;

void endConsoleWin(void)
{
	if(__hStdOut)
		FreeConsole();
	if(__fStdOut)
		fclose(__fStdOut);
}

void startConsoleWin(int width, int height, char* fname)
{//创建一个Console窗口,指明宽度和高度,如果fname不为空则同时将输出写入一个文件。
	__fStdOut=NULL;
	__hStdOut=NULL;

	AllocConsole();//分配
	SetConsoleTitle("Debug/Output Window");
	__hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);//指明句柄为标准输出HANDLE
	COORD co = {width,height};	
	SetConsoleScreenBufferSize(__hStdOut, co);//指明缓冲区大小
	if(fname)		
		__fStdOut = fopen(fname, "w");
}

// Use wprintf like TRACE0, TRACE1, ... (The arguments are the same as printf)
int debugCon_wprintf(char *fmt, ...)
{//类似于printf的函数,向Console写入文本
	char s[1024*30];	
	va_list argptr;	
	int cnt;	
	va_start(argptr, fmt);
	cnt = vsprintf(s, fmt, argptr);	
	va_end(argptr);	
	DWORD cCharsWritten;
	if(__hStdOut)// 写Console
		WriteConsole(__hStdOut, s, strlen(s), &cCharsWritten, NULL);	
	if(__fStdOut)
		fprintf(__fStdOut, s);	
	return(cnt);
}